package com.yonyou.cyxdms.sysAuth.service.mapper;

import com.yonyou.cyx.framework.dao.base.SuperMapper;
import com.yonyou.cyxdms.framework.bean.dto.user_info.LoginInfoDto;
import com.yonyou.cyxdms.sysAuth.service.dto.CYXEmployeeDTO;
import com.yonyou.cyxdms.sysAuth.service.dto.EmpInfoDTO;
import com.yonyou.cyxdms.sysAuth.service.entity.EmpPo;
import com.yonyou.cyxdms.sysAuth.service.entity.UserPO;
import com.yonyou.cyxdms.sysmanage.client.domains.dto.UserRoleDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface UserLoginMapper extends SuperMapper<EmpPo> {

	/**
	 * 查询用户
	 * @author maxingjian
	 * @date 2019-01-10
	 * @param username
	 * @return
	 */
	List<Map> getUser(@Param("appId") String appId, @Param("username") String username, @Param("mobilePhone") String mobilePhone);

	 /**
	 *
	 * 验证用户名密码是否正确
	 * @author cuitao
	 * @date 2019-01-10
	 * @param userCode
	 * @param password
	 * @param groupCode
	 * @return
	 */
	 List<Map>logCheck(@Param("appId")String appId, @Param("userCode")String userCode,@Param("password") String password,@Param("groupCode") String groupCode);

	/**
	 * 用户校验
	 * @author maxingjian
	 * @date 2019-01-10
	 * @param userCode
	 * @return
	 */
	List<Map> getLoginUser(@Param("appId") String appId, @Param("userCode") String userCode);

	/**
	 * 用户校验
	 * @author cuitao
	 * @date 2019-01-10
	 * @param userCode
	 * @return
	 */
	List<Map> getLoginUser2(@Param("userCode") String userCode);

	/**
	 * 获取用户组织
	 * @author maxingjian
	 * @date 2019-01-10
	 * @param empId
	 * @return
	 */
	List<Map> getUserDetails(@Param("appId") String appId, @Param("empId") String empId);


	/**
	 * 获取所有组织
	 * @author maxingjian
	 * @date 2019-01-10
	 * @return
	 */
	List<Map> getDealerOrg();

	/**
	 * 获取所有组织
	 * @author maxingjian
	 * @date 2019-01-10
	 * @return
	 */
	List<UserRoleDTO> findEmpPotenialRoles(@Param("userId") String userId);

	/**
	 * 获取所有组织
	 * @author maxingjian
	 * @date 2019-11-15
	 * @return
	 */
	List<UserRoleDTO> findEmpPotenialRolesForPad(@Param("userId") String userId);


	List<UserRoleDTO> findEmpPotenialtRoles(@Param("userId") String userId);



	/**
	 * 获取组织
	 *
	 * @return
	 * @author maxingjian
	 * @date 2019-01-10
	 */
	List<Map<String, Object>> findEmpOrg(@Param("userId") String userId);

	/**
	 * pc获取所有组织
	 * @author maxingjian
	 * @date 2019-09-19
	 * @return
	 */
	List<UserRoleDTO> findEmpRoles(@Param("userId") String userId);

    /**
     * 获取所有组织
     * @author maxingjian
     * @date 2019-01-10
     * @return
     */
    Integer findUserRole(@Param("employeeId") String employeeId,@Param("role") String role);


	/**
	 * 获取所有组织
	 * @author maxingjian
	 * @date 2019-01-10
	 * @param userId
	 * @return com.yonyou.cyxdms.framework.bean.dto.user_info.LoginInfoDto
	 */
	LoginInfoDto getLoginInfoDto(@Param("userId") String userId);

	/**
	 * @description：获取regId
	 * @author     ：quankk
	 * @date       ：Created in 2019/3/22 14:13
	 * @modified By：
	 */
	String selectRegIdByUserId(@Param("userId") Object userId, @Param("employeeNo") String employeeNo);

    String selectRegIdByUserIds(@Param("userId") List<String> userId);

    /**
     * 查询包含regId的all用户
     * @return
     */
    List<Map<String, Object>> setByUserId();
	/**
	 * @author     ：quankk
	 * @date       ：2019/5/21 20:40
	 * @description：
	 */
	List<Map> getUserByOpenId(@Param("appId") String appId, @Param("openId") String openId);

	/**
	 * @author     ：quankk
	 * @date       ：2019/5/22 11:33
	 * @description：
	 */
	List<Integer> selectEmployeeIdByPhone(@Param("appId") String appId, @Param("phone") String phone);

    /**
     * @author     ：quankk
     * @date       ：2019/5/22 15:28
     * @description：
     */
    EmpInfoDTO empInfo(@Param("userId") Long userId,@Param("companyCode") String companyCode,@Param("appId") String appId);

    /**
     * @author     ：quankk
     * @date       ：2019/5/24 18:19
     * @description：
     */
    CYXEmployeeDTO selectCYXEmployee(@Param("empId") Long empId);

    /**
     * @author     ：quankk
     * @date       ：2019/7/8 15:30
     * @description：
     */
    Map isConsultant(@Param("appId") String appId, @Param("employeeNo") String employeeNo);

    /**
     * @author     ：quankk
     * @date       ：2019/7/8 15:34
     * @description：
     */
	Map isTeleConsultant(@Param("appId") String appId, @Param("employeeNo") String employeeNo);

	/**
	 * @author     ：quankk
	 * @date       ：2019/7/8 15:38
	 * @description：
	 */
	Map isSalesManager(@Param("appId") String appId, @Param("employeeNo") String employeeNo);

	/**
	 * @author     ：quankk
	 * @date       ：2019/7/8 17:36
	 * @description：
	 */
	List<Map> queryHandles(@Param("companyId") Long companyId, @Param("userId") Long userId);

	/**
	 * @author     ：quankk
	 * @date       ：2019/7/8 17:40
	 * @description：
	 */
	List<Map> handles(@Param("appId") String appId, @Param("userId") Long userId);


	Map<String, Object> queryRoleByEmpNo(@Param("userId") String userId);



	/**
	 * @author     ：maxingjian
	 * @date       ：2019/7/20 18:25
	 * @description：
	 */
	Long existAppId(@Param("appId") String appId);

	/**
	 * @author     ：maxingjian
	 * @date       ：2019/7/20 18:25
	 * @description：
	 */
	Long existUser(@Param("appId") String appId,@Param("userCode") String userCode);

	List<UserPO> findUser(@Param("appId") String appId, @Param("userCode") String userCode);


	int insertZhtLog(@Param("req") String req, @Param("res") String res);

}

